//package org.example;
//
//import org.example.entity.CustomerInfo;
//import org.example.generator.DataGenerator;
//
//import java.time.LocalDate;
//import java.util.HashMap;
//import java.util.Map;
//
///**
// * 测试身份证号生成逻辑
// */
//public class TestIdNoGeneration {
//    public static void main(String[] args) {
//        System.out.println("=== 测试身份证号生成逻辑 ===");
//
//        LocalDate testDate = LocalDate.of(2023, 8, 15);
//
//        // 统计男女性别和身份证号倒数第二位的关系
//        Map<String, Integer> maleSecondLastDigits = new HashMap<>();
//        Map<String, Integer> femaleSecondLastDigits = new HashMap<>();
//
//        int maleCount = 0;
//        int femaleCount = 0;
//
//        // 生成1000个用户信息进行测试
//        for (int i = 0; i < 1000; i++) {
//            CustomerInfo customer = DataGenerator.generateCustomerInfo(testDate);
//            String gender = customer.getGender();
//            String idNo = customer.getPlIdNo();
//
//            // 获取倒数第二位数字
//            String secondLastDigit = idNo.substring(idNo.length() - 2, idNo.length() - 1);
//
//            if ("男".equals(gender)) {
//                maleCount++;
//                maleSecondLastDigits.put(secondLastDigit, maleSecondLastDigits.getOrDefault(secondLastDigit, 0) + 1);
//            } else {
//                femaleCount++;
//                femaleSecondLastDigits.put(secondLastDigit, femaleSecondLastDigits.getOrDefault(secondLastDigit, 0) + 1);
//            }
//        }
//
//        System.out.println("\n=== 统计结果 ===");
//        System.out.println("总生成数量: " + (maleCount + femaleCount));
//        System.out.println("男性数量: " + maleCount);
//        System.out.println("女性数量: " + femaleCount);
//
//        System.out.println("\n=== 男性身份证号倒数第二位数字分布 ===");
//        System.out.println("（应该都是单数：1,3,5,7,9）");
//        maleSecondLastDigits.entrySet().stream()
//                .sorted((e1, e2) -> e1.getKey().compareTo(e2.getKey()))
//                .forEach(entry -> {
//                    String digit = entry.getKey();
//                    int count = entry.getValue();
//                    System.out.printf("数字 %s: %d次 (%.1f%%)\n", digit, count, (count * 100.0 / maleCount));
//                });
//
//        System.out.println("\n=== 女性身份证号倒数第二位数字分布 ===");
//        System.out.println("（应该都是双数：0,2,4,6,8）");
//        femaleSecondLastDigits.entrySet().stream()
//                .sorted((e1, e2) -> e1.getKey().compareTo(e2.getKey()))
//                .forEach(entry -> {
//                    String digit = entry.getKey();
//                    int count = entry.getValue();
//                    System.out.printf("数字 %s: %d次 (%.1f%%)\n", digit, count, (count * 100.0 / femaleCount));
//                });
//
//        // 验证逻辑
//        System.out.println("\n=== 验证结果 ===");
//        boolean maleValid = maleSecondLastDigits.keySet().stream()
//                .allMatch(digit -> "13579".contains(digit));
//        boolean femaleValid = femaleSecondLastDigits.keySet().stream()
//                .allMatch(digit -> "02468".contains(digit));
//
//        System.out.println("男性身份证号倒数第二位都是单数: " + (maleValid ? "✓ 正确" : "✗ 错误"));
//        System.out.println("女性身份证号倒数第二位都是双数: " + (femaleValid ? "✓ 正确" : "✗ 错误"));
//
//        if (maleValid && femaleValid) {
//            System.out.println("\n🎉 身份证号生成逻辑验证通过！");
//        } else {
//            System.out.println("\n❌ 身份证号生成逻辑验证失败！");
//        }
//    }
//}

